189C - Permutations - CodeForces Solution


greedy implementation *1500

Please click on ads to support us..

C++ Code:

#include <bits/stdc++.h>
#include <algorithm>

using namespace std;

namespace IO{
    void setIn(string s) {freopen(s.c_str(), "r", stdin);}
    void setOut(string s) {freopen(s.c_str(), "w", stdout);}
    void setIO(string s = ""){
        ios_base::sync_with_stdio(false);
        cin.tie(0); cout.tie(0);
        #ifndef ONLINE_JUDGE
        #endif // ONLINE_JUDGE
        if (s.size()){
            setIn(s+".inp");
            setOut(s+".out");
        } else{
            #ifndef ONLINE_JUDGE
                freopen("input.txt", "r", stdin);
            #endif // ONLINE_JUDGE
        }
    }
}

using namespace IO;

namespace Function{
    template <typename T1, typename T2> bool amax(T1 &a, T2 b){
        if (a < b) {
            a = b;
            return 1;
        }
        return 0;
    }
    template <typename T1, typename T2> bool amin(T1 &a, T2 b){
        if (a > b){
            a = b;
            return 1;
        }
        return 0;
    }
    template <typename T> void compress(T &a){
        sort(a.begin(), a.end());
        a.resize(unique(a.begin(), a.end()) - a.begin());
    }
    template <typename T1, typename T2, typename T3> int position(T1 Begin, T2 End, T3 val, bool type = 0){
        if (type == 0){
            return lower_bound(Begin, End, val) - Begin;
        }
        return upper_bound(Begin, End, val) - Begin;
    }

    template <typename T> long long sqr(T x) {return 1LL * x * x;}

    template <typename T1, typename T2> long long pow_mod(T1 a, T2 b, long long mod = 1){ //a ^ b % mod
        if(b == 0){return 1 % mod;}
        else{
            if(b % 2 == 0){
                return sqr(pow_mod(a, b / 2, mod)) % mod;
            }else{
                return a * (sqr(pow_mod(a, b / 2, mod)) % mod) % mod;
            }
        }
    }
  
    template <typename T1, typename T2> long long GCD(T1 a, T2 b) {return b == 0 ? a : GCD(b, a % b);}
    template <typename T1, typename T2> long long LCM(T1 a, T2 b) {return 1LL * a / GCD(a, b) * b;}
}

using namespace Function;

namespace Output{
    char End_Of_Stream = '\n';
    void print(int x) {cout << x << End_Of_Stream;}
    void print(unsigned int x) {cout << x << End_Of_Stream;}
    void print(long unsigned int x) {cout << x << End_Of_Stream;}
    void print(long long x) {cout << x << End_Of_Stream;}
    void print(unsigned long long x) {cout << x << End_Of_Stream;}
    void print(float x) {cout << x << End_Of_Stream;}
    void print(double x) {cout << x << End_Of_Stream;}
    void print(long double x) {cout << x << End_Of_Stream;}
    void print(char x) {cout << x << End_Of_Stream;}
    void print(const char* x) {cout << x << End_Of_Stream;}
    void print(string x) {cout << x << End_Of_Stream;}
    void print(bool x) {cout << x << End_Of_Stream;}

    template <typename T1, typename T2> void print(pair <T1, T2> a) {cout << a.first << " " << a.second << End_Of_Stream;}
    template <size_t sz> void print(bitset<sz> a) {
        for(int i = 0; i < sz; i++){
            cout << a[i];
        }
        cout << End_Of_Stream;
    }

    template <typename T> void write(T x) {print(x);}

    template <class T, class... Ts> void write(T t, Ts... ts){
        write(t);
        write(ts...);
    }

    template <class T, class... Ts> void print(T t, Ts... ts){
        End_Of_Stream = ' ';
        write(t, ts...);
        cout << '\n';
        End_Of_Stream = '\n';
    }

    template <typename T> void print(T a){
        for(auto it : a){
            cout << it << " ";
        }
        cout << "\n";
    }

    template <typename T> void prints(T a){
        for(auto it : a){
            print(it);
        }
    }

    template <class T, class... Ts> void prine(T t, Ts... ts){
        print(t, ts...);
        exit(0);
    }
}

using namespace Output;

typedef pair <int, int> pii;
typedef long long ll;
#define fi first
#define se second


const int dx[] = {1, -1, 0, 0};
const int dy[] = {0, 0, 1, -1};
const int dx1[] = {1, -1, 0, 0, -1, 1, -1, 1};
const int dy1[] = {0, 0, 1, -1, -1, -1, 1, 1};
const int INF = 1e9 + 10;
const long long INFL = 1e18 + 1e15;
const long long MOD = 1e9 + 7;
const long long MOD1 = (119 << 23) + 1;
const int N = 2e5 + 5;



int main(){
    // setIO();
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);

    int n;
    cin >> n;
    vector<int> vec1(n), vec2(n);
    for(int i = 0; i < n; i++){
        cin >> vec1[i];
    }
    for(int i = 0; i < n; i++){
        cin >> vec2[i];
    }
    int cnt = 0;
    int id = 0;
    for(int i = 0; i < n; i++){
        if(vec1[id] == vec2[i]){
            id++;
            cnt++;
        }
    }
    print(n - cnt);


    return 0;
}


Comments

Submit
0 Comments
More Questions

436. Find Right Interval
435. Non-overlapping Intervals
406. Queue Reconstruction by Height
380. Insert Delete GetRandom O(1)
332. Reconstruct Itinerary
368. Largest Divisible Subset
377. Combination Sum IV
322. Coin Change
307. Range Sum Query - Mutable
287. Find the Duplicate Number
279. Perfect Squares
275. H-Index II
274. H-Index
260. Single Number III
240. Search a 2D Matrix II
238. Product of Array Except Self
229. Majority Element II
222. Count Complete Tree Nodes
215. Kth Largest Element in an Array
198. House Robber
153. Find Minimum in Rotated Sorted Array
150. Evaluate Reverse Polish Notation
144. Binary Tree Preorder Traversal
137. Single Number II
130. Surrounded Regions
129. Sum Root to Leaf Numbers
120. Triangle
102. Binary Tree Level Order Traversal
96. Unique Binary Search Trees
75. Sort Colors